// 模块1
console.log( '模块1。。。' )

// 使用 export 命令输出模块功能

/* // 1.基本使用
function fn1(a,b){
    console.log( a+b )
}
// 输出模块功能
export {fn1}
 */


/* // 2.应用场景（不推荐）
export let name = '张三'
export let age = 23
export let sex = '女'
export function say(){
    console.log( 'hi' )
} */


/* // 3.应用场景（推荐）
let name = '李四'
let age = 24
let sex = '男'
function say(){
    console.log( 'hello' )
}
// 输出模块功能
export {name,age,sex,say} */


/* // 4.应用场景
function test1(){
    console.log( 'test1...' )
}
function test2(){
    console.log( 'test2...' )
}
// 输出模块功能（输出变量原本的名字）
// export {test1,test2}
// 输出模块功能（修改输出的变量名字）
// 使用 as 关键字修改输出的变量名称
export {
    test1 as fn1,
    test2 as fn2,
    test2 as fn3
} */


/* // 5.应用场景
function test(){
    console.log( 'test...' )
}
let obj = {
    name: '老王',
    age: 35
}
// export {obj.name} // 错误的语法
// export { // 错误的语法
//     obj.name as name
// }
export {test,obj} */


/* // 6.应用场景
// 每一个模块内部都可以有一个默认输出（只能有一个）
export default function (){
    console.log( '默认输出。。。1' )
}
// export default function (){// 报错，语法错误，默认输出只能有一个
//     console.log( '默认输出。。。2' )
// } */


/* // 7.应用场景
let name = '静静'
function say(){
    console.log( 'hi' )
}
export {name,say}// 正常的输出
export default function (){// 默认输出
    console.log( '默认输出。。。1' )
}
 */


/* // 8.应用场景
let name = '李四'
let age = 24
let sex = '男'
function say(){
    console.log( 'hello' )
}
// 输出模块功能
export {name,age,sex,say} */


/* // 9.应用场景
let name = '静静'
function say(){
    console.log( 'hi' )
}
export {name,say}// 正常的输出
export default function (){// 默认输出
    console.log( '默认输出。。。1' )
} */


/* // 10.应用场景
// 模块内部对外输出的内容是实时的
let num = 123
setTimeout(()=>{
    num = 456
},1000)
export {num}// 先输出num=123，1秒之后再将num=456 */


// 11.应用场景
// 当前模块不需要输出任何内容，只需要执行一些程序
// 在模块内部，最外层的this不指向window对象，而是指向undefined
function fun(){
    console.log( this )// undefined
}
fun()
console.log( this )// undefined
